C#でOCR処理に入力画像を使用する方法

C#で画像を読み取る方法 with IronOCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCRは光学式文字認識技術を使ってJPG, PNG, GIF, TIFF, BMPフォーマットの画像からテキストを抽出します。 基本的なテキスト抽出は、NuGetパッケージをインストールした後、わずか1行のコードが必要です。

OCR(光学式文字認識)技術は、画像からテキストを認識・抽出する技術です。 スキャンしたページ、写真、その他の画像ファイルからテキストコンテンツを抽出し、印刷文書をデジタル化します。 IronOCRはTesseract 5の高度な機械学習アルゴリズムと独自の画像前処理を組み合わせ、業界をリードする精度を実現しています。

ライブラリは、jpgpnggiftiffbmp フォーマットをサポートしています。 画像フィルタは、一般的な品質問題を自動補正することで、読み取り能力を向上させます。 IronOCRは、Tesseract 5と高度な前処理を組み合わせ、高解像度スキャンから圧縮されたウェブ画像まで、異なる画像品質とフォーマットにおいて正確な結果を提供します。

クイックスタート: IronOCRで画像ファイルを読み取る

1行のコードで画像からテキストを抽出します。 この例では、IronTesseractReadメソッドを使って、画像を読み込み、テキストを読み込んでいます。 このライブラリは、画像の前処理とテキストの抽出を自動的に行います。

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronOCR をインストールします

    PM > Install-Package IronOcr

  2. このコード スニペットをコピーして実行します。

    var result = new IronTesseract().Read(new OcrImageInput("Potter.png"));
  3. 実際の環境でテストするためにデプロイする

    今すぐ無料トライアルでプロジェクトに IronOCR を使い始めましょう
    arrow pointer


IronOCRで画像を読むには? まず、`IronTesseract`クラスをインスタンス化します。 using'ステートメントを使用して、画像ファイルのパスを持つ`OcrImageInput`オブジェクトを作成します。 これにより、適切なリソース廃棄が保証されます。 IronOCRはjpg、png、gif、tiff、bmpフォーマットをサポートしています。 `Read`メソッドでOCRを実行します。 ライブラリは自動的に画像フォーマットを検出し、適切な前処理を適用します。 新規ユーザーについては、[Windows用インストールガイド](/csharp/ocr/get-started/windows/)を参照するか、[NuGetパッケージオプション](/csharp/ocr/get-started/advanced-installation-nuget/)を探索してください。 クロスプラットフォーム開発については、[Linuxセットアップ](/csharp/ocr/get-started/linux/)または[macOSインストール](/csharp/ocr/get-started/mac/)を確認してください。 ブラケットオープン バージョン2025.6から: - TIFF 画像の読み込みのパフォーマンスが一貫して向上しました。 - TIFF画像の読み込みでは、マシンのGPUに依存するパフォーマンスの向上が見られます。 最大2倍の速度を体験するユーザーもいれば、以前のバージョンと同様のパフォーマンスを体験するユーザーもいます。 ブラケットを閉じる ```csharp /* :path=/static-assets/ocr/content-code-examples/how-to/input-images-read.cs */ using IronOcr; // Instantiate IronTesseract IronTesseract ocrTesseract = new IronTesseract(); // Add image using var imageInput = new OcrImageInput("Potter.png"); // Perform OCR OcrResult ocrResult = ocrTesseract.Read(imageInput); // Display the extracted text Console.WriteLine(ocrResult.Text); // Get confidence level double confidence = ocrResult.Confidence; Console.WriteLine($"Confidence: {confidence}%"); ```
IronOCRテキスト抽出デモ:ハリー・ポッターのページ画像をコードエディタでプレーンテキストに変換
TIFFとGIF画像の読み方については、[マルチフレーム/ページGIFとTIFFの読み方](/csharp/ocr/how-to/input-tiff-gif/)をご覧ください。 複数ページについては、[複数ページTIFF処理例](/csharp/ocr/examples/csharp-tesseract-multipage-tiff/)を参照してください。 ### なぜ信頼度が重要なのですか? 信頼度はIronOCRが抽出したテキストの正確さについて確信を持っていることを示します。 一般的に、85%以上の値は信頼できる結果を示します。 スコアが低い場合、画像の前処理や手作業によるレビューが必要になることがあります。 信頼度スコアを使用して、人間による検証のためにドキュメントに自動的にフラグを立てたり、追加の[画像最適化フィルタ](/csharp/ocr/features/filters/)をトリガしたりします。 ### どのような場合に異なる画像フォーマットを使用すべきですか? PNGとTIFF形式は、可逆圧縮により最高のOCR結果を提供します。 単一ページのドキュメントにはPNGを、複数ページのスキャンにはTIFFを使用してください。 JPEGは写真には適していますが、圧縮アーチファクトが発生する可能性があります。 BMPは非圧縮の品質を提供しますが、ファイルサイズが大きくなります。 GIFは、色を限定したシンプルなグラフィックに適しています。 [フォーマット固有の最適化](/csharp/ocr/features/compatibility/)については、こちらをご覧ください。 ### 一般的な画像の読み取りエラーとは よくあるエラーとしては、画像の解像度が低い(200DPI以下)、テキストが傾いている、コントラストが低い、サポートされていない言語などがあります。 IronOCRは多くの問題に対して自動修正機能を提供しますが、深刻な問題に対しては手作業による前処理が必要になる場合があります。 解決策については、[トラブルシューティングガイド](/csharp/ocr/troubleshooting/general-troubleshooting-ocr/)を参照してください。 ## 画像をバイトとしてインポートするにはどうすればよいですか? . 。 `OcrImageInput クラスは、ファイルパス、バイト、AnyBitmap`、Stream、または Image オブジェクトとしてイメージを受け入れます。 `AnyBitmap`は、[IronSoftware.Drawing.AnyBitmap](/open-source/csharp/drawing/examples/bitmap-to-stream/)のビットマップオブジェクトです。 この柔軟性により、データベース、Web API、クラウドストレージなど、さまざまなデータソースとのシームレスな統合が可能になります。 この柔軟性は、データベース、ウェブサービス、メモリストリームからの画像を扱う際に役立ちます。 高度なストリーム処理については、[OCR with input streams](/csharp/ocr/how-to/input-streams/)を参照してください。 [System.Drawing統合ガイド](/csharp/ocr/how-to/input-system-drawing/)は、レガシーコードとの互換性のための追加例を提供します。 ```csharp :path=/static-assets/ocr/content-code-examples/how-to/input-images-import-byte.cs ``` ### ファイル パスの代わりにバイト配列を使用する必要があるのはどのような場合ですか? バイト配列は、データベース、ウェブサービス、暗号化されたソースからの画像に最適です。 ファイルは一時的なディスクストレージを必要としないため、より優れたセキュリティを提供します。 クラウドアプリケーション、マイクロサービス、機密文書の処理にはバイト配列を使用します。 ファイルパスは、大規模な画像コレクションのローカルバッチ処理において、より効率的なままであること。 ```csharp using IronOcr; using IronSoftware.Drawing; using System.IO; // Method 1: From URL var imageFromUrl = AnyBitmap.FromUri("https://example.com/document.jpg"); using var urlInput = new OcrImageInput(imageFromUrl); // Method 2: From Stream using var fileStream = File.OpenRead("document.png"); using var streamInput = new OcrImageInput(fileStream); // Method 3: From System.Drawing (with IronSoftware.Drawing) var bitmap = AnyBitmap.FromFile("scan.bmp"); using var bitmapInput = new OcrImageInput(bitmap); // Process any of these inputs IronTesseract ocr = new IronTesseract(); OcrResult result = ocr.Read(bitmapInput); ``` ### なぜイメージ バイトではメモリ管理が重要なのですか? 大きな画像は、特に複数のドキュメントを同時に処理する場合、大きなメモリを消費します。 using'ステートメントを使用することで、適切なリソースの廃棄を保証します。 バッチ処理については、同時処理を制限したキューシステムの実装を検討してください。 [マルチスレッドガイド](/csharp/ocr/how-to/async/)は、効率的なメモリ管理テクニックを示しています。 ### 異なる入力タイプのパフォーマンスへの影響は何ですか? IronOCRはデータを直接読み込むため、ファイルパスはローカルファイルに対して最速のパフォーマンスを提供します。 バイト配列は、画像全体をメモリにロードする必要がありますが、柔軟性があります。 ストリームは、データをインクリメンタルに読み込むことで、メモリ使用量とパフォーマンスのバランスをとります。 大規模バッチでの最適なパフォーマンスについては、[パフォーマンス・チューニング・ガイド](/csharp/ocr/examples/tune-tesseract-for-speed-in-dotnet/)を参照してください。 ## スキャン領域を指定するにはどうすればよいですか? OcrImageInput をインスタンス化するときに CropRectangle を渡して、処理する画像領域を指定します。 スキャン範囲を限定することで、パフォーマンスが大幅に向上します。 以下の例では、章番号とタイトルだけを読み上げています。 この手法では、特定の文書領域をターゲットにする場合、処理時間を最大90%短縮できます。 複雑なレイアウトや複数のリージョンについては、[OCR Region of an Image](/csharp/ocr/how-to/ocr-region-of-an-image/)を参照してください。 [コンテンツ領域ガイド](/csharp/ocr/troubleshooting/crop-regions-rectangles/)では、高度な領域選択テクニックを説明しています。 ```csharp :path=/static-assets/ocr/content-code-examples/how-to/input-images-read-specific-region.cs ``` ### なぜリージョンを指定するとパフォーマンスが向上するのですか? 関連する画像領域のみを処理することで、計算オーバーヘッドを60~90%削減します。 OCRエンジンは入力領域のすべてのピクセルを分析するため、領域が小さいほど処理が速くなります。 また、このアプローチは、ヘッダー、フッター、またはターゲットテキスト領域外の装飾要素による潜在的な干渉を排除することで、精度を向上させます。
ソース画像とデバッグ出力の両方で、第8章のタイトルを強調する赤い四角形を使用したOCRスキャン領域のデモ
### いつ複数のスキャン領域を使用する必要がありますか? フォーム、請求書、複数カラムのレイアウトなど、テキストエリアが分かれているドキュメントには、複数のリージョンを使用します。 論理的なテキストの流れを維持するために、各領域を別々に処理します。 このアプローチは、[テーブルデータの抽出](/csharp/ocr/how-to/read-table-in-document/)や、構造化ドキュメントから特定のフィールドを読み取る場合に効果的です。 ### 座標系の規約は何ですか? IronOCRは左上を原点(0,0)とする標準ピクセル座標を使用します。 Xは右方向に、Yは下方向に増加します。 長方形のパラメータは(X、Y、幅、高さ)です。 正確な領域選択のためには、画像編集ツールを使ってピクセル座標を特定するか、アプリケーションに視覚的な領域セレクタを実装してください。 ## 高度な画像処理はどのように適用できますか? IronOCRはOCR精度を向上させる包括的な画像前処理機能を提供します。 低画質画像、スキャン文書、または困難な条件を扱う場合は、フィルタを適用します。 [フィルタウィザード](/csharp/ocr/how-to/filter-wizard/)は、特定の画像に最適なフィルタの組み合わせを決定するのに役立ちます。 ```csharp using IronOcr; IronTesseract ocr = new IronTesseract(); using var input = new OcrImageInput("low-quality-scan.jpg"); // Apply image enhancement filters input.Deskew(); // Correct image rotation input.DeNoise(); // Remove background noise input.Binarize(); // Convert to black and white input.EnhanceResolution(300); // Adjust DPI for better accuracy // Configure for better accuracy ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; ocr.Configuration.Language = OcrLanguage.English; OcrResult result = ocr.Read(input); ``` [画像最適化フィルター](/csharp/ocr/examples/ocr-image-filters-for-net-tesseract/)と[低品質スキャンの修正](/csharp/ocr/examples/ocr-low-quality-scans-tesseract/)について学んでください。 色補正のニーズについては、[画像色補正ガイド](/csharp/ocr/how-to/image-color-correction/)を参照してください。 ### 画像前処理フィルタはいつ適用すべきですか? スキャンした文書、テキストの写真、品質に問題のある画像を扱う場合は、フィルタを適用します。 よくあるシナリオとしては、傾いたページの修正、コピーからの背景ノイズの除去、色あせたテキストの強調などがあります。 [DPI設定ガイド](/csharp/ocr/how-to/dpi-setting/)は、解像度関連の問題を最適化するのに役立ちます。 ### なぜフィルタの順序が重要なのですか? フィルタの順序は結果に大きく影響します。 回転補正(`Deskew`)を最初に適用し、次にノイズ除去を行い、コントラストを強調します。 2値化は通常、最後に行う必要があります。例えば、ノイズ除去の前にシャープネス処理を行うと、ノイズが目立ちやすくなります。 最適な結果を得るために、さまざまなシーケンスをテストしてください。 ### よくある前処理の間違いは何ですか? 過剰な処理は、最も一般的なエラーです。 過剰な鮮鋭化はアーチファクトを生成し、積極的なノイズ除去は細かいテキストの詳細を削除し、不適切な二値化のしきい値は情報を失う。 最小限の前処理で開始し、必要な場合にのみフィルタを追加します。 [画質補正ガイド](/csharp/ocr/how-to/image-quality-correction/)は、詳細なベストプラクティスを提供します。 ## パフォーマンスを最適化するにはどうすればよいですか? 複数の画像や大きなバッチを処理する場合は、これらの最適化を考慮してください: 1.**`IronTesseract`インスタンスの再利用**:複数の操作のために1つのインスタンスを作成する 2.**スキャン領域を指定する**:OCRを関連する画像領域に限定することで、60~90%の利益が得られます。 3.**適切な画像形式を使用する**:PNGとTIFFはJPEGよりも良い結果をもたらします。 4.**選択的に前処理を適用する**:必要なときだけフィルタを使う 5.**並列処理を実装する**:バッチ処理にマルチコアCPUを活用する 高性能なシナリオについては、[マルチスレッドガイド](/csharp/ocr/examples/csharp-tesseract-multithreading-for-speed/)と[高速OCR構成](/csharp/ocr/examples/tune-tesseract-for-speed-in-dotnet/)を参照してください。 [プログレス・トラッキング機能](/csharp/ocr/how-to/progress-tracking/)は、長期間実行される操作を監視するのに役立ちます。 ### なぜインスタンスの再利用はパフォーマンスを向上させるのですか? `IronTesseract`の初期化では、言語データをロードし、OCRエンジンを設定します。 インスタンスを再利用することで、後続の操作におけるこのオーバーヘッドを排除します。 Webアプリケーション用のシングルトンインスタンス、またはバッチ処理用の共有インスタンスを作成し、効率を最大化します。 ### どのような場合に並列処理を使用する必要がありますか? 並列処理は、複数の独立した画像があるシナリオにメリットをもたらします。 異なるページやドキュメントを同時に処理しますが、同じ画像に対して並列処理を行うことは避けてください。 最新のCPUは、4~8個の同時OCR処理を効率的に処理します。 各操作には、画像サイズに応じて100~500MBが必要なため、メモリ使用量を監視してください。 ### メモリ使用に関する考慮事項は何ですか? OCR処理には通常、RAMで10~20倍の画像ファイルサイズが必要です。 5MBの画像は、処理中に50~100MBを使用する可能性があります。 大きなバッチには、同時処理を制限したプロデューサー-コンシューマー・パターンを実装する。 [abortトークンの例](/csharp/ocr/examples/abort-token/)は、メモリ集約型操作のキャンセルを示しています。 ## 次のステップは何ですか? これらのリソースを使用して、より複雑なシナリオからテキストを抽出します: - [PDFからテキストを読み取る](/csharp/ocr/how-to/input-pdfs/) - OCRでPDF文書を処理する - [スクリーンショットからデータを抽出する](/csharp/ocr/examples/read-screenshot/) - 画面の内容をキャプチャして読み取ります。 - [スキャンされたドキュメントを処理する](/csharp/ocr/examples/read-scanned-document/) - 複数ページのスキャンされたファイルを処理する。 - [System.Drawingオブジェクトの操作](/csharp/ocr/how-to/input-system-drawing/) - 既存の.NET画像処理コードとの統合 - [複数の言語を読む](/csharp/ocr/how-to/ocr-multiple-languages/) - 125以上の言語でテキストを抽出します。 - [特定のドキュメントタイプを処理する](/csharp/ocr/tutorials/read-specific-document/) - パスポート、請求書などのために最適化します。

よくある質問

C#でテキスト抽出のために読み込める画像形式は?

IronOCRはJPG, PNG, GIF, TIFF, BMP画像フォーマットからのテキスト読み込みをサポートします。ライブラリは自動的に画像フォーマットを検出し、最適なテキスト抽出結果のために適切な前処理を適用します。

1行のコードで画像ファイルからテキストを抽出するには?

IronOCRを使って1行でテキストを抽出することができます: `var result = new IronTesseract().Read(new OcrImageInput("image.png"));`.これは自動的にTesseract 5 OCRテクノロジーを使って画像の前処理とテキスト抽出を行います。

画像の読み取りにはどのようなOCR技術が使用されていますか?

IronOCR は、Tesseract 5の高度な機械学習アルゴリズムと独自の画像前処理を組み合わせています。この組み合わせにより、高解像度のスキャン画像から圧縮されたウェブ画像まで、様々な画質やフォーマットにおいて業界をリードする精度を実現します。

画像を読み取る際のリソースの適切な扱い方を教えてください。

OcrImageInputオブジェクトを作成する際には、usingステートメントを使用し、適切なリソース廃棄を行うようにしてください。このパターンは、メモリとファイルハンドルを自動的に管理します: `using var ocrInput = new OcrImageInput("image.jpg");`.

ファイル全体ではなく、画像の特定の領域を読み取ることはできますか?

はい、IronOCRでは、画像内の特定の読み取り領域を定義するために切り抜き領域を指定することができます。この機能は、OCR処理を画像の関連部分に集中させ、パフォーマンスと精度を向上させるのに役立ちます。

画像に自動的に適用される前処理は何ですか?

IronOCRは、一般的な画質の問題を補正し、読み取り能力を向上させる画像フィルターを自動的に適用します。このライブラリは、基本的なユースケースにおいて、手動設定を必要とせずにフォーマット検出と前処理を行います。

TIFF画像処理のパフォーマンス向上はありますか?

IronOCRバージョン2025.6から、TIFF画像の読み込みは一貫して高速になりました。TIFF画像の読み込みは、マシンのGPUに依存した改善が見られ、一部のユーザーは以前のバージョンの最大2倍の速度を経験しています。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

レビュー済み

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'name'

Filename: sections/author_component.php

Line Number: 70

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 70
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

">

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'title'

Filename: sections/author_component.php

Line Number: 84

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 84
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'comment'

Filename: sections/author_component.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once